package com.seal.commons.infrastructure.facade.distributed.limiter;

import java.util.concurrent.TimeUnit;

/**
 * 功能描述:DistributedRateLimiter <br/>
 *
 * @author yong.huang
 * @date: 2020-07-24 17:03<br/>
 * @since JDK 1.8
 */
public interface DistributedRateLimiter {

    /**
     * 限流器
     * @param key limiter key
     * @param rate 限制访问次数
     * @param period 限制访问次数时间间隔
     * @param unit 时间单位
     * @param isCluster 是否集群, 建议只集群模式使用，单机建议使用guava的RateLimiter
     * @return
     */
    boolean tryAcquire(String key, long rate, long period, TimeUnit unit, boolean isCluster );
}